<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 返回类
 * 作为方法的返回值
 * Class Ret
 */
class Ret
{
    /**
     * 返回状态
     * @var int
     */
    public $code;

    /**
     * 返回的信息数组
     * @var array
     */
    public $msg;

    /**
     * 返回信息个数
     * @var int
     */
    public $count;

    /**
     * model指针
     * @var
     */
    public $model;

    /**
     * 返回数据的返回集
     * @var
     */
    public $data_1;
    public $data_2;
    public $data_3;
    public $data_4;
    public $data_5;
    public $data_6;
    public $data_7;
    public $data_8;
    public $data_9;
    public $data_10;

    /**
     * 用于返回时的添加值，作用于 get_result 方式
     * @var
     */
    public $result;

    /**
     * 构造函数
     * @param $mod Model指针
     */
    public function __construct(&$mod)
    {
        $this->code = -1;
        $this->msg = array();
        $this->count = 0;
        $this->model = $mod;

        $this->result = array();
    }

    /**
     * 设置返回的CODE
     * @param $code
     */
    public function set_code($code)
    {
        $this->code = $code;
    }

    public function get_code()
    {
        return $this->code;
    }

    /**
     * 设置返回的值
     * @param $data
     * @param int $index
     */
    public function set_data($data, $index = 1)
    {
        $key = "data_" .$index;
        $this->$key = $data;
    }

    /**
     * 获取返回的值
     * @param int $index
     * @return mixed
     */
    public function get_data($index = 1)
    {
        $key = "data_" .$index;
        return $this->$key;
    }

    /**
     * result 和 data 容易混淆，区别在于：
     * data：用于MOdel返回给controller ，可能是多个返回值
     * result： 用于controller向上返回的最终值，与 get_result() 配合使用
     * @param $result
     */
    public function set_result($result)
    {
        $this->result = $result;
    }

    public function get_result()
    {
        return array_merge($this->result, array(
            "code" => $this->code,
            "msg" => $this->model->status_msg($this->code)));
    }

    /**
     * 压入返回的message数组
     * @param $v
     */
    public function push_msg($v)
    {
        if (is_array($v)) {
            $this->msg = array_merge($this->msg, $v);
            $this->count += sizeof($this->msg);
        } else {
            $this->msg[] = $v;
            $this->count++;
        }
    }
}
